#!/usr/bin/env python

import fiscal
import ImpresionFiscal
import utiles
from decimal import Decimal
import os
import webbrowser

tipodoc = {'CUIT':'C', 'CUIL':'L', 'LE':'0', 'LC':'1', 'DNI':'2', 'Pasaporte':'3', 'CI':'4' }
responsabilidad = { 'Inscripto':'I', 'Cons. Final':'C', 'Monotributo':'M' }

#*******************************************************************************

##def recibos(nrorecibo,fecha,nombreCliente,totalEnLetras,nrofactura,listaDePagos,total,listaPendiente):
##    print "****************************************************************************"
##    print "IMPRIMIENDO RECIBO"
##    print "Recibo numero: " + str(nrorecibo) + " Fecha: " + fecha
##    print
##    print "Recibi de " + nombreCliente + " la suma de pesos "
##    print totalEnLetras
##    print "en concepto de pago de la factura numero " + str(nrofactura)
##    print "Detalle de valores recibidos:"
##    for fila in listaDePagos:
##        print "   - " + fila[1] + " cuotas: " + fila[2] + " sutotal: $" + fila[4]
##    print
##    print "Total: $"+str(total)
##    print
##    if listaPendiente != []:
##        print "El resto queda en cuenta segun detalle:"
##        for fila in listaPendiente:
##            print "   - " + fila[1] + " cuotas: " + fila[2] + " valor: $" + fila[3] + " total: $" + fila[4]
##    print "****************************************************************************"

def imprimirRecibo(textoRecibo,nroRecibo):
    ImpresionFiscal.imprimirDetalle(textoRecibo)
    for renglon in textoRecibo:
        print renglon
    return True

#*******************************************************************************

def impresionTipo2(idcliente,nroticket,tipoOperacion,datosCliente,grillaVenta,grillaPagos,listaTotalizadores,listaPie):

    print "IMPRIMIENTO TICKET 2: ", nroticket

    impresion = []

    #GENERANDO CABECERA

    if tipoOperacion != 2:
        impresion.append("MERCADERIA EN CONSIGNACION")
    impresion.append("Ticket nro: "+str(nroticket))
    impresion.append(" ")

    nombre = "Cliente: "+idcliente+" "+str(datosCliente['nombre'][:30])
    domic = "Domicilio: "+str(datosCliente['direccion'])
    respon = "Condicion Fiscal: "+str(datosCliente['situacionfiscal'])
    tipod  = "Tipo doc: "+str(datosCliente['tipodoc'])+" Nro: "+str(datosCliente['nrodoc'])
 
    DatosCliente = [nombre,domic,respon,tipod," "]
    impresion += DatosCliente
    
    #GENERANDO DETALLE DE LA VENTA
    
    totFilas = grillaVenta.GetNumberRows()
    totalFactura = Decimal("0.00")
    
    for fil in xrange(totFilas):
        if grillaVenta.GetCellValue(fil,0) == "":
            continue
        
        descripcion1 = "- "+str(grillaVenta.GetCellValue(fil,2))
        descripcion2 = str("  PTC: "+grillaVenta.GetCellValue(fil,0))
        TextoFiscal = [descripcion1,descripcion2]
        impresion += TextoFiscal
        
        descripcion = str("Codigo: %s %s %s" % (grillaVenta.GetCellValue(fil,1),grillaVenta.GetCellValue(fil,3),grillaVenta.GetCellValue(fil,4)))
        cantidad = Decimal(grillaVenta.GetCellValue(fil,5))

        preciounitario = Decimal(grillaVenta.GetCellValue(fil,7)) / cantidad
        totalFactura = totalFactura + Decimal(grillaVenta.GetCellValue(fil,9))

        detalle = " %0.02f x $%0.02f " % (cantidad,preciounitario)
    
        DatosProducto = [descripcion,detalle]
        impresion += DatosProducto
        
        bonificacion = Decimal(grillaVenta.GetCellValue(fil,7))-Decimal(grillaVenta.GetCellValue(fil,9))
        if bonificacion > Decimal("0.00"):
            descripcion = "Bonificacion $%0.02f" % (bonificacion)
            BonificacionProducto = [descripcion]
        elif bonificacion < Decimal("0.00"):
            descripcion = "Recargo $%0.02f" % (bonificacion)
            BonificacionProducto = [descripcion]
        else:
            BonificacionProducto = []

        impresion += BonificacionProducto

    #GENERANDO EL CIERRE DEL TICKET - FINALIZANDO LA VENTA
    
    #listaTotalizadores contiene: [%descuento,iva,total sin iva,total con iva]

    subtotal = "Subtotal factura $"+str(totalFactura)
    descuentoGeneral = totalFactura - listaTotalizadores[3]
    if descuentoGeneral == Decimal("0.00"):
        DescuentoRecargo = [" ",subtotal]
    elif descuentoGeneral > Decimal("0.00"):
        descripcion = "Descuento venta $%0.02f" % (descuentoGeneral)
        DescuentoRecargo = [" ",subtotal,descripcion]
    else:
        descripcion = "Recargo venta $%0.02f" % (descuentoGeneral)
        DescuentoRecargo = [" ",subtotal,descripcion]
    impresion += DescuentoRecargo

    totalFinal = "TOTAL VENTA $"+str(listaTotalizadores[3])
    impresion += [" ",totalFinal]

    totFilas = grillaPagos.GetNumberRows()
    DetallePagos = [" ","Detalle de pago"]
    for fil in xrange(totFilas):
        if grillaPagos.GetCellValue(fil,0) == "":
            continue
        descripcion = str(grillaPagos.GetCellValue(fil,1))
        monto = str(grillaPagos.GetCellValue(fil,4))
        DetallePagos.append(descripcion+" $"+monto)
    impresion += DetallePagos

    impresion.append(listaPie[0])
    impresion.append(listaPie[1])
    impresion.append(listaPie[2])
    impresion.append(listaPie[3])
    impresion.append(listaPie[4])

    #imprimiendo documento
    #fiscal.imprimirDetalle(impresion) no en venta tipo 2
    for renglon in impresion:
        print renglon
        
    return 1

def impresionNotaCreditoTipo2(idcliente,nroticket,tipoOperacion,datosCliente,grillaVenta,listaTotalizadores,listaPie):

    print "IMPRIMIENTO NOTA DE CREDITO tipo 2: ", nroticket

    impresion = []

    #GENERANDO CABECERA

    impresion.append("Ticket nro: "+str(nroticket))
    impresion.append(" ")

    nombre = "Cliente: "+idcliente+" "+str(datosCliente['nombre'][:30])
    domic = "Domicilio: "+str(datosCliente['direccion'])
    respon = "Condicion Fiscal: "+str(datosCliente['situacionfiscal'])
    tipod  = "Tipo doc: "+str(datosCliente['tipodoc'])+" Nro: "+str(datosCliente['nrodoc'])
 
    DatosCliente = [nombre,domic,respon,tipod," "]
    impresion += DatosCliente
    
    #GENERANDO DETALLE DE LA NOTA DE CREDITO
    
    totFilas = grillaVenta.GetNumberRows()
    totalFactura = Decimal("0.00")
    
    for fil in xrange(totFilas):
        if grillaVenta.GetCellValue(fil,0) == "":
            continue
        
        descripcion1 = "- "+str(grillaVenta.GetCellValue(fil,2))
        descripcion2 = str("  PTC: "+grillaVenta.GetCellValue(fil,0))
        TextoFiscal = [descripcion1,descripcion2]
        impresion += TextoFiscal
        
        descripcion = str("Codigo: %s %s %s" % (grillaVenta.GetCellValue(fil,1),grillaVenta.GetCellValue(fil,3),grillaVenta.GetCellValue(fil,4)))
        cantidad = Decimal(grillaVenta.GetCellValue(fil,5))

        preciounitario = Decimal(grillaVenta.GetCellValue(fil,7)) / cantidad
        totalFactura = totalFactura + Decimal(grillaVenta.GetCellValue(fil,9))

        detalle = " %0.02f x $%0.02f " % (cantidad,preciounitario)
    
        DatosProducto = [descripcion,detalle]
        impresion += DatosProducto
        
        bonificacion = Decimal(grillaVenta.GetCellValue(fil,7))-Decimal(grillaVenta.GetCellValue(fil,9))
        if bonificacion > Decimal("0.00"):
            descripcion = "Bonificacion $%0.02f" % (bonificacion)
            BonificacionProducto = [descripcion]
        elif bonificacion < Decimal("0.00"):
            descripcion = "Recargo $%0.02f" % (bonificacion)
            BonificacionProducto = [descripcion]
        else:
            BonificacionProducto = []

        impresion += BonificacionProducto

    #GENERANDO EL CIERRE DEL TICKET - FINALIZANDO LA NOTA DE CREDITO
    
    #listaTotalizadores contiene: [%descuento,iva,total sin iva,total con iva]

    subtotal = "Subtotal factura $"+str(totalFactura)
    descuentoGeneral = totalFactura - listaTotalizadores[3]
    if descuentoGeneral == Decimal("0.00"):
        DescuentoRecargo = [" ",subtotal]
    elif descuentoGeneral > Decimal("0.00"):
        descripcion = "Descuento NC $%0.02f" % (descuentoGeneral)
        DescuentoRecargo = [" ",subtotal,descripcion]
    else:
        descripcion = "Recargo NC $%0.02f" % (descuentoGeneral)
        DescuentoRecargo = [" ",subtotal,descripcion]
    impresion += DescuentoRecargo

    totalFinal = "TOTAL NOTA DE CREDITO$"+str(listaTotalizadores[3])
    impresion += [" ",totalFinal]

    impresion.append(listaPie[0])
    impresion.append(listaPie[1])
    impresion.append(listaPie[2])
    impresion.append(listaPie[3])
    impresion.append(listaPie[4])

    #imprimiendo documento
    #fiscal.imprimirDetalle(impresion) no en nota de credito tipo 2
    for renglon in impresion:
        print renglon
        
    return 1

def imprimirReciboEnImpresoraLaser(textoRecibo,nroRecibo):
    print "Impresion laser. Recibo nro", nroRecibo
    #self.padre= venta
    #print "paso"
    html = open('c:\\erpsussan\\modelos\\reciboEnLaser.html', 'r').read()
    datos_sucursal = utiles.datosSucursal()
    miImagen = "imgs\logosucursal"+datos_sucursal[0]+".png"
    cadena_imagen = ' <img src="%s" />' % (miImagen)
    html = html.replace('{ % imagen % }', cadena_imagen)
    html = html.replace('{ % tipo operacion % }',"checked" )
    contenido = ''

    for renglon in textoRecibo:
        contenido += '<tr><td><div align="center"><font color="#000000" size="2">%s</font></div></td></tr>' % renglon
    
    html = html.replace('{ % datos % }', str(contenido))

    archivo_salida = open('c:\\erpsussan.doc\\reciboEnLaser2.html', 'w')
    archivo_salida.write(html)
    archivo_salida.close()

    os.system("taskkill /IM firefox.exe /F")
    os.system("c:\\explorer.lnk c:\\erpsussan.doc\\reciboEnLaser2.html")
    print "****************************************"

    return True